package main.链表;

import common.ListNode;
import java.util.Arrays;


/**
 * @author tmh
 * @date 2024/7/26 17:24
 * @description
 */
public class T148排序链表 {
    /**
     * 很直白的操作
     * 1.统计链表里面元素的个数
     * 2. 把链表里面的元素放在数组里面
     * 3. 把数组里面的元素进行升序排序
     * 4. 通过数组里面的元素来构造新的元素已经排序好的链表
     * @param head
     * @return
     */
    public ListNode sortList(ListNode head) {
        if (head==null){
            return head;
        }
        ListNode p = head;
        int len = 0;
        while (p != null) {
            len++;
            p = p.next;
        }
        int[] array = new int[len];
        p = head;
        int index = 0;
        while (p != null) {
            array[index++] = p.val;
            p = p.next;
        }
        Arrays.sort(array);
        ListNode result = new ListNode(array[0]);
        p=result;
        for (int i = 1; i < array.length; i++) {
            p.next=new ListNode(array[i]);
            p=p.next;
        }
        return result;
    }
}
